import { getCurrentFiscalPeriod } from '@/api/core'
import { formatDate } from '@/utils/index'

// 设置禁用会计区间之外时间
export function setDisableTime(target, _disStartDate, _disEndDate) {
  target.forEach((element) => {
    if (element.value === 'businessDate') {
      element['TimePickerOptions'] = {
        disabledDate(time) {
          let _time = formatDate(new Date(time), 'YYYY-MM-DD')
          return _time > _disEndDate.value || _time < _disStartDate.value
        },
      }
    }
  })
}
// 获取业务日期
export async function _getCurrentFiscalPeriod(
  target,
  _proxy,
  disStartDate,
  disEndDate
) {
  // 默认业务日期未当前日期
  let dateOperation = formatDate(new Date(), 'YYYY-MM-DD')
  let resp = await getCurrentFiscalPeriod(1)
  // 存在会计区间
  if (resp && resp.success && resp.data) {
    return handelCurrentFiscalPeriod(
      dateOperation,
      resp.data,
      disStartDate,
      disEndDate
    )
  } else {
    _proxy.$message({
      type: 'error',
      duration: 3500,
      message: '未开启会计期间，请先开启会计期间!',
      showClose: true,
    })
    // 不存在会计区间删除时间选择禁用（可以自由选择时间）
    const businessDateObj = target.filter((element) => {
      return element.value === 'businessDate'
    })
    delete businessDateObj.TimePickerOptions
    return dateOperation
  }
}
// 处理返回业务日期
function handelCurrentFiscalPeriod(
  dateOperation,
  data,
  _disStartDate,
  _disEndDate
) {
  const startDate = data.startDate
  const endDate = data.endDate
  _disStartDate.value = data.startDate
  _disEndDate.value = data.endDate
  // 如果当前时间在当前会计区间对应的时间内，取当前时间(默认取当前时间)
  let result = dateOperation
  // 如果当前时间小于当前会计区间的开始时间，取当前会计区间的开始时间
  if (dateOperation < startDate) {
    result = startDate
  }
  // 如果当前时间大于当前会计区间的开始时间，取当前会计区间的结束时间
  if (dateOperation > endDate) {
    result = endDate
  }
  return result
}
